if(!App)
	App = {};

//定义form相关的操作
App.common.form = function(){
	var self = this;
	
	//-----------------------------------------------
	//checkBox
	//-----------------------------------------------
	
	/**
	 * 通过一个checkbox来对多选框进行同步操作
	 * @param {Object} name	check的名称
	 * @param {Object} obj	触发的checkbox本身
	 */
	self.checkToggle=function(name,obj){
		var b=obj.checked;
		var cs=document.getElementsByName(name);
		for (var i=0;i<cs.length;i++) {
			cs[i].checked = b;
		}
	}
	/**
	 * 多选框全选
	 * @param {Object} name
	 */
	self.checkAll=function(name){$("input[name=" + name + "]").each(function() {$(this).attr("checked", true);});}
	/**
	 * 多选框全不选
	 * @param {Object} name
	 */
	self.checkNo=function(name){$("input[name=" + name + "]").each(function() {$(this).attr("checked", false);});}
	/**
	 * 多选框反选
	 * @param {Object} name
	 */
	self.checkOther=function(name){
		$("input[name=" + name + "]").each(function() {
			if ($(this).attr("checked")) {
				$(this).attr("checked", false);
			} else {
				$(this).attr("checked", true);
			}
		});}
	/**
	 * 获取radio的值
	 * @param {Object} name
	 * @return {TypeName} 
	 */
	self.radio=function(name){
		return $("input[name="+name+"]:checked").val();
	}
	/**获取一个checkbox的全部选中的值，默认以空格连接*/
	self.checklist=function(name, link) {
		link = link || " ";
		var value = "";
		$("input[name=" + name + "]").each(function() {
			if ($(this).attr("checked"))
				value += $(this).val() + link;
		});
		return value.substring(0, value.length - 1);
	}
	/**
	 * 设置select当前选中的值
	 * @param {Object} id
	 * @param {Object} value
	 */
	self.setSelect=function(id, value){
		var obj = document.getElementById(id);
		for(var i=0;i<obj.options.length;i++)
			if(obj.options[i].value == value)
				obj.options[i].selected = true;
	}
	/**
	 * 设置select的第index个元素被选中
	 * @param {Object} id
	 * @param {Object} index
	 */
	self.setSelectIndex=function(id, index){
		index = index || 0;
		var obj = document.getElementById(id);
		if(obj.options.length > 0 && obj.options.length >= index)
			obj.options[index].selected = true;
	},
	/**
	 * 自动渲染
	 * @param {Object} o	需要渲染对象
	 * @param {Object} prefix	id的前缀，根据此前缀+属性名得到doc对象
	 * @param {Object} kv	特殊属性名匹配
	 */
	self.render=function(o, prefix,kv){
		if(o){
			for(var k in o){
				$("#"+prefix+k).val(o[k]);
			}
		}
	}
	/**
	 * 渲染post对象
	 * @param {Object} o
	 * @param {Object} prefix
	 * @param {Object} kv
	 */
	self.renderPost=function(o, prefix, po_pre,kv){
		var po = {};
		if(o){
			for(var k in o){
				var obj = $("#"+prefix+k);
				if(obj) po[po_pre+k]=obj.val();
			}
		}
		return po;
	}
}

//定义ajax相关的操作
App.common.ajax = function(base){
	var self = this;
	//默认的路径
	var root = base || ROOT_;

	/**
	 * 以get形式获取数据
	 * @param {Object} url
	 * @param {Object} callBack
	 */
	self.get=function(url,callBack){
		$.get(root+url,{"random":Math.random()},function(data,state){
			if (state=="success"){
				try{
					var d = null;
					if(typeof data === "string") d=eval('(' + data + ')'); else d=data;
					if(d.error==false){
						callBack(d.message, d.data);
					}else
						alert(d.message);
				}catch(e){
					console.log(e.message);
					alert(data);
				}
			}
		});
	}
	/**使用POST的形式发送数据，服务器返回的数据格式为 'error':'0','message':'' 如果error为0 ，则调用回调函数callback
	 * @param {Object} url
	 * @param {Object} params
	 * @param {Object} callBack
	 * @param {Object} customCallBack	如果有，则直接调用此回调
	 */
	self.post=function(url,params,callBack,customCallBack){
		$.post(root+url,params,function(data,stauts){if (stauts == "success") {
			if(!customCallBack){
				var d = null;
				if(typeof data === "string") d=eval('(' + data + ')'); else d=data;
				if(d.error=='0'){
					callBack(d.message,d.data);
				}else
					alert(d.message);
			}else{
				customCallBack(data);				
			}
		}});
	}
	//加载页面信息
	self.load=function(url,callBack){
		$.get(root+url,{},function(data,state){
			if (state=="success"){
				callBack(data);
			}
		});
	}
	//以window.open 方式打开本地的一个新页面
	self.open=function(url,title,w,h){
		window.open(root+url,title,'height='+h+',width='+w);
	}
}

/**
 * 基于artDialog 5 的对话框
 */
App.common.dialog=function(){
	var self = this;
	/**
	 * 动态加载对话框内容
	 * @param {Object} aid
	 * @param {Object} title
	 * @param {Object} url
	 * @param {Object} okFun
	 */
	self.load=function(aid,title,url,okFun){
		var ajax = new App.common.ajax();
		$.dialog({
			id:aid,
			title:title,
			fixed:true,
			lock:true, 
			ok:function(){
				if(okFun) okFun();
			}
		});
		ajax.load(url,function(data){
			$.dialog.get(aid).content(data);
		});
	}
	/**
	 * 弹窗提示
	 * @param {Object} c
	 */
	self.alert=function(c){$.alert(c);}
	/**
	 * 确认
	 * @param {Object} msg
	 * @param {Object} okCallback
	 */
	self.confirm=function(msg,okCallback){
		$.dialog({
			content:msg,
			fixed:true,
			lock:true,
			ok:function(){
				if(okCallback) okCallback();
			},
			cancel:true
		});
	}
	/**
	 * 弹出对话框
	 * @param {Object} divId
	 * @param {Object} dTitle
	 * @param {Object} okCallback
	 */
	self.show=function(divId, dTitle, okCallback){
		$.dialog({
			id:divId,
			content:document.getElementById(divId),
			title:dTitle,
			fixed:true,
			lock:true,
			ok:function(){
				if(okCallback) return okCallback();
			},
			cancel:true
		});
	}
}